package com.nulldev.util.scripting.cup.instruction_sets.sil;

import com.nulldev.util.manage.Version;
import com.nulldev.util.scripting.cup.instruction_sets.sil.insts.*;
import com.nulldev.util.scripting.cup.instructions.CupInstruction;
import com.nulldev.util.scripting.cup.instructions.InstructionSet;

public class SimpleInstructionLanguage implements InstructionSet {

	public static final Version VERSION = new Version(1, 0, 0);
	@SuppressWarnings("unchecked")
	public static final Class<? extends CupInstruction>[] INSTRUCTIONS = new Class[]
		{ AddOperation.class, CopyRegister.class, CUPIDQuery.class, DivideOperation.class, LoadNearestRegister.class, LoadRegister.class,
				ModulusOperation.class, MoveRegister.class, MultiplyOperation.class, NukeRegister.class, RegisterTypeOf.class, WriteToRegister.class,
				DecrementOperation.class, IncrementOperation.class, PrefetchInstructionOperation.class };

	@Override
	public Class<? extends CupInstruction>[] getInstructions() {
		return INSTRUCTIONS;
	}

	@Override
	public String getShortName() {
		return "SIL";
	}

	@Override
	public String getFullName() {
		return "Simple Instruction Language";
	}

	@Override
	public Version getInstructionSetVersion() {
		return VERSION;
	}
}
